package Negocio;

import java.util.Date;

import DTO.DTO_Barra;
import DTO.DTO_Cafeteria;
import DTO.DTO_Cocina;
import DTO.DTO_ProductoVenta;
import Entities.Entity_Barra;
import Entities.Entity_Cafeteria;
import Entities.Entity_Cocina;
import Entities.Entity_ProductoVenta;


public abstract class ProductoVenta extends Producto {

	protected float porcentajeComision;
	protected Area areaProduccion;

	//Constructores
	public ProductoVenta(String n, String c, Date fV, float porcentajeComision,
			Area areaProduccion) {
		super(n, c, fV);
		this.porcentajeComision = porcentajeComision;
		this.areaProduccion = areaProduccion;
	}
		 
	public ProductoVenta(){
	}
	
	public ProductoVenta(DTO_ProductoVenta prodVenta){
		super(prodVenta);
		this.porcentajeComision = prodVenta.getPorcentajeComision();
		
		if(prodVenta.getAreaProduccion() instanceof DTO_Cocina)
			this.areaProduccion = new Cocina((DTO_Cocina) prodVenta.getAreaProduccion());
		else if(prodVenta.getAreaProduccion() instanceof DTO_Cafeteria)
			this.areaProduccion = new Cafeteria((DTO_Cafeteria) prodVenta.getAreaProduccion());
		else if(prodVenta.getAreaProduccion() instanceof DTO_Barra)
			this.areaProduccion= new Barra((DTO_Barra) prodVenta.getAreaProduccion());
	}	
	
	public ProductoVenta(Entity_ProductoVenta prodVenta){
		super(prodVenta);
		this.porcentajeComision = prodVenta.getPorcentajeComision();
		
		if(prodVenta.getAreaProduccion() instanceof Entity_Cocina)
			this.areaProduccion = new Cocina((Entity_Cocina) prodVenta.getAreaProduccion());
		else if(prodVenta.getAreaProduccion() instanceof Entity_Cafeteria)
			this.areaProduccion = new Cafeteria((Entity_Cafeteria) prodVenta.getAreaProduccion());
		else if(prodVenta.getAreaProduccion() instanceof Entity_Barra)
			this.areaProduccion= new Barra((Entity_Barra) prodVenta.getAreaProduccion());
	}	
	
	//GET & SET
	public float getPorcentajeComision() {
		return porcentajeComision;
	}

	public void setPorcentajeComision(float porcentajeComision) {
		this.porcentajeComision = porcentajeComision;
	}

	public Area getAreaProduccion() {
		return areaProduccion;
	}

	public void setAreaProduccion(Area areaProduccion) {
		this.areaProduccion = areaProduccion;
	}
	
	//METODOS DE NEGOCIO
	
	public abstract DTO_ProductoVenta toDTO();
	public abstract Entity_ProductoVenta toEntity();
}
